% getMaxWithAs.m by SmartBet (Fran), Granada, 30-11-11

% Given an integer suma: maximum value of a hand

function suma = getMaxWithAs(cartas)

% Make sure input is an integer array.
if ( numel(cartas) == 1)
    error('Argument must be an integer array.');
    return;
end

contador = 0;

for i = 1:numel(cartas)
    
    if ( cartas(i) ~= floor(cartas(i)) )
        error('Argument must be an integer array.');
        return;
    end

    if ~isreal(cartas(i))
        error('Argument must be an integer.');
        return;
    end

    if ( cartas(i) <= 0 || cartas(i) > 10)
        error('Integers must be between 1 and 10.');
        return;
    end
    
    if ( cartas(i) == 1 )
        contador = contador+1;
    end
    
end

if ( contador == 0 )
    error('There must be at least an ace.');
    return;
end

suma = 0;   
contador2=0;

for i = 1:numel(cartas)
    if cartas(i) == 1
        contador2 = contador2+1;
    else
        suma = suma+cartas(i);
    end
end

if(suma+contador2 <= 10)
    suma = suma + 10 + contador2;
else
    suma = suma + contador2;
end

if ( suma > 21 )
    error('Result can not be higher than 21.');
    return;
end
